#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LNode, *LinkList;

bool DeleteNode(LNode *p);

int main() {}

// 指定删除的结点p
// 把后一位元素的值复制给p 然后删除后一位元素
// 存在bug 万一p是最后一位元素 不存在下一个节点
// 时间复杂度 O(1)
bool DeleteNode(LNode *p)
{
    if (p == NULL)
        return false;

    LNode *q = p->next;
    p->data = p->next->data; // 把后面一位元素的值交给p
    p->next = q->next;
    free(q);
    return true;
}